Host systems conventionally use a cache memory when reading information from an optical or magnetic mass storage medium. In this approach, a drive mechanism reads the information from the storage medium and stores it in the cache memory. If the host system requests a block of information that is already stored in the cache memory, then the host system will pull this information from the cache memory rather than the physical storage medium. This event is referred to as a cache hit. If information is not stored in the cache memory, then the host system is forced to retrieve the information from the storage medium itself. This event is referred to a cache miss. Generally, a requested piece of information can be retrieved from cache memory faster than it can be retrieved from the physical storage medium—this being the primary benefit of the use of cache memories.
FIG. 1 shows a depiction of a conventional cache memory 102. A conventional cache memory 102 comprises a portion of high speed memory (e.g., RAM). Cache management logic (not shown) uses one or more pointers (e.g., pointer 104) to identify locations within the cache memory 102 for storing and retrieving information.
FIG. 2 shows a conventional procedure 200 for retrieving information from a storage medium. The procedure 200 particularly pertains to a conventional technique for retrieving media information (such as music or movies) from an optical storage medium. Conventional optical storage media include compact discs (CDs), digital versatile discs (DVDs), etc. In step 202, an optical drive mechanism receives a request from a host system (such as a computer system or dedicated player device) for specific information. The host system may specifically identify a particular block of media information for presentation at an output device (such as a display device and/or speakers). In step 204, the drive mechanism determines whether the requested block of information is present in the cache memory 102. If so, in step 206, the drive mechanism will retrieve the information from the cache memory 102 and forward it to the host system.
In step 208, if the requested information is not in the cache memory 102, the drive mechanism will read the information from the storage medium itself (e.g., the actual CD disc or DVD disc). The drive mechanism will then supply this information to the host system. The drive mechanism may also flush the cache memory 102 and store the recently retrieved information (obtained from the storage medium) in the cache memory 102. Further, the drive mechanism may also read ahead to retrieve a series of additional contiguous blocks from the storage medium that follow the requested block of information, and then store these additional blocks in the cache memory 102. As a result, if the host system subsequently requests the next contiguous block of information stored on the storage medium, then the drive mechanism can retrieve this block of information from the cache memory 102, as opposed to the storage medium. Step 210 indicates that this procedure 200 is repeated throughout the playback of the media information until the host system terminates the procedure 200. The use of the read-ahead technique reduces the drive mechanism's required interaction with the storage medium.
The above-described cache memory retrieval scheme works well for the kinds of media information mentioned above, namely music and movies. In these cases, the playback pattern is predictably linear, meaning that a consumer will typically play this media information from start to finish. While there may be some deviation from this pattern, as when the consumer jumps back or ahead to a different point in the media information, these deviations are relatively infrequent, and thus do not noticeably affect the performance of the drive mechanism. On the hand, other applications do not accommodate this kind of linear and predictable playback of information. Consider, for instance, the case of a storage medium (e.g., a DVD-ROM) that provides game information. The game information may include: information that defines the characters and other objects used to compose scenes; information that defines the audio presentation of the game (e.g., various voice clips and sound effects); information that governs various game engines, and so on. A game developer will attempt to optimize game performance by arranging blocks of information that are likely to be requested close together in time during play into a group of related files, and then storing such group of related files close to each other on the storage medium. However, even with this provision, game play proceeds in a basically open-ended and unpredictable fashion. Depending on the actions taken by the player, which are largely unpredictable, the drive mechanism may have to pull from different parts of the storage medium in quick succession. This kind of reading behavior will cause frequent cache misses, and consequently, will cause frequent flushing and refilling of the cache memory 102. Such behavior can negatively impact the performance of the game.
There is accordingly an exemplary need for more efficient strategies for reading information from a storage medium using a cache memory, particularly for those information consumption environments that do not exhibit linear and predictable playback of information.